#ifndef __DRV_BASE_H
#define __DRV_BASE_H

#if defined (__GNUC__)                      /* GNU GCC Compiler */
    #include <stdarg.h>
    #define ABS_SECTION(x)                     __attribute__((section(x)))
    #define ABS_USED                           __attribute__((used))
    #define ABS_ALIGN(n)                       __attribute__((aligned(n)))
    #define ABS_WEAK                           __attribute__((weak))
    #define ABS_STATIC_INLINE                  static inline
    #define ABS_ASM                            asm volatile
    #define ABS_INLINE                         inline
    #define ABS_STATIC_FORCEINLINE             __attribute__((always_inline)) static inline
    #define ABS_NO_RETURN                      __attribute__((__noreturn__))
    #define ABS_NO_INLINE                      __attribute__((noinline))
    #define ABS_CONSTRUCTOR(n)                 __attribute__((constructor(n)))
    #define ABS_PACKED                         __attribute__((packed, aligned(1)))
    #define ABS_PACKED_STRUCT                  struct __attribute__((packed, aligned(1)))
    #define ABS_PACKED_UNION                   union __attribute__((packed, aligned(1)))
#else
    #error  "unsupported compiler, please complete macro defines"
#endif


#endif